package com.zhijian.medical.enums.diagnose.report;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 膀胱癌枚举
 */
@Slf4j
public class BladderEnum {

    /**
     * 前期治疗
     */
    @AllArgsConstructor
    @Getter
    public enum PreTreatmentEnum {
        //肿瘤活检 肿瘤切除 新辅助治疗 无 未知
        TUMOR_BIOPSY("tumorBiopsy", "肿瘤活检"),
        TUMOR_REMOVAL("tumorRemoval", "肿瘤切除"),
        NEOADJUVANT_TREATMENT("neoAdjuvantTreatment", "新辅助治疗"),
        NO("no", "无"),
        UNKNOWN("unknown", "未知");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(PreTreatmentEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 标本类型
     */
    @AllArgsConstructor
    @Getter
    public enum SampleTypeEnum {
        //全膀胱圽除标本 膀胱部分切除标本 全膀胱+前列腺切除标本 全膀胱及子宫切除标本
        WHOLE_BLADDER("wholeBladder", "全膀胱圽除标本"),
        PARTIAL_BLADDER("partialBladder", "膀胱部分切除标本"),
        WHOLE_BLADDER_AND_PROSTATE("wholeBladderAndProstate", "全膀胱+前列腺切除标本"),
        WHOLE_BLADDER_AND_UTERUS("wholeBladderAndUterus", "全膀胱及子宫切除标本");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(SampleTypeEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 肿瘤部位
     */
    @AllArgsConstructor
    @Getter
    public enum TumorLocationEnum {
        //前壁 三角区 左侧壁 颈部 前列腺尿道部 右侧壁 后壁 顶壁
        FRONT_WALL("frontWall", "前壁"),
        TRIANGLE_AREA("triangleArea", "三角区"),
        LEFT_WALL("leftWall", "左侧壁"),
        NECK("neck", "颈部"),
        PROSTATE_URETHRAL("prostateUrethral", "前列腺尿道部"),
        RIGHT_WALL("rightWall", "右侧壁"),
        BACK_WALL("backWall", "后壁"),
        TOP_WALL("topWall", "顶壁");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(TumorLocationEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * cm大体类型
     */
    @AllArgsConstructor
    @Getter
    public enum CmGrossTypeEnum {
        //外生乳头型 实体型/结节性 溃疡型 浸润型 平坦型
        EXOGENOUS_PAPILLARY("exogenousPapillary", "外生乳头型"),
        SOLID_TYPE("solidType", "实体型/结节性"),
        ULCERATIVE_TYPE("ulcerativeType", "溃疡型"),
        INVASIVE_TYPE("invasiveType", "浸润型"),
        FLAT_TYPE("flatType", "平坦型");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(CmGrossTypeEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 组织学类型
     */
    @AllArgsConstructor
    @Getter
    public enum HistologicalTypeEnum {
        //尿路上皮原位癌 非浸润性乳头状尿路上皮癌 浸润性尿路上皮癌 鱗状细胞癌 腺癌 小细胞癌 脐尿管腺癌 透明细胞癌 某他
        UROTHELIUM_ORGINAL("urothelialOrigin", "尿路上皮原位癌"),
        NON_INVASIVE_PAPILLARY("nonInvasivePapillary", "非浸润性乳头状尿路上皮癌"),
        INVASIVE_URETHRA("invasiveUrethra", "浸润性尿路上皮癌"),
        SQUAMOUS_CELL("squamousCell", "鳞状细胞癌"),
        ADENOCARCINOMA("adenocarcinoma", "腺癌"),
        SMALL_CELL("smallCell", "小细胞癌"),
        URETERAL_ADENOCARCINOMA("ureteralAdenocarcinoma", "脐尿管腺癌"),
        CLEAR_CELL("clearCell", "透明细胞癌"),
        OTHER("other", "其他");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(HistologicalTypeEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 百分比
     */
    @AllArgsConstructor
    @Getter
    public enum PercentageEnum {

        P0(0, "0"),
        P10(10, "10"),
        P20(20, "20"),
        P30(30, "30"),
        P40(40, "40"),
        P50(50, "50"),
        P60(60, "60"),
        P70(70, "70"),
        P80(80, "80"),
        P90(90, "90"),
        P100(100, "100");

        private final Integer key;
        private final String desc;

        private static final List<MappingEnum<Integer, String>> TEMP_MAPPING = Arrays.stream(PercentageEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<Integer, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 组织学亚性
     */
    @AllArgsConstructor
    @Getter
    public enum HistologicalSubtypeEnum {
        //伴鳞状分化 伴腺样分化 伴滋养叶分化 巢状 微乳头状 淋巴上皮瘤样 浆细胞样 肉瘤样 伴有巨细胞 透明细胞 富于脂质 未分化 其他
        WITH_SQUAMOUS_DIFFERENTIATION("withSquamousDifferentiation", "伴鳞状分化"),
        WITH_ADENOCARCINOMA_DIFFERENTIATION("withAdenocarcinomaDifferentiation", "伴腺样分化"),
        WITH_TROPHOBLASTIC_DIFFERENTIATION("withTrophoblasticDifferentiation", "伴滋养叶分化"),
        NESTED("nested", "巢状"),
        MICROPODIA("micropodia", "微乳头状"),
        LYMPHOEPITHELIAL_TUMOR("lymphoepithelialTumor", "淋巴上皮瘤样"),
        PLASMA_CELL("plasmaCell", "浆细胞样"),
        SARCOMATOUS("sarcomatous", "肉瘤样"),
        WITH_MUCINOUS("withMucinous", "伴有巨细胞"),
        CLEAR_CELL("clearCell", "透明细胞"),
        RICH_IN_LIPID("richInLipid", "富于脂质"),
        UNDIFFERENTIATED("undifferentiated", "未分化"),
        OTHER("other", "其他");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(HistologicalSubtypeEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 浸润深度
     */
    @AllArgsConstructor
    @Getter
    public enum DepthOfInvasionEnum {
        //无原发肿瘤证据 肿瘤局限于膀胱黏膜层 肿瘤侵犯膀胱黏膜固有层 肿瘤侵犯膀胱黏膜固有肌层（＜1/2肌层）肿瘤侵犯膀胱黏膜固有肌层（>1/2肌层）肿瘤穿透膀胱固有肌层达周围组织
        NO_PRIMARY_TUMOR_EVIDENCE("noPrimaryTumorEvidence", "无原发肿瘤证据"),
        TUMOR_LIMITED_TO_BLADDER_MUCOSA("tumorLimitedToBladderMucosa", "肿瘤局限于膀胱黏膜层"),
        TUMOR_INVADING_BLADDER_MUCOSA_SUBMUCOSA("tumorInvadingBladderMucosaSubmucosa", "肿瘤侵犯膀胱黏膜固有层"),
        TUMOR_INVADING_BLADDER_MUCOSA_SUBMUCOSA_MUSCLE("tumorInvadingBladderMucosaSubmucosaMuscle", "肿瘤侵犯膀胱黏膜固有肌层（＜1/2肌层）"),
        TUMOR_INVADING_BLADDER_MUCOSA_SUBMUCOSA_MUSCLE_MORE_THAN_HALF("tumorInvadingBladderMucosaSubmucosaMuscleMoreThanHalf", "肿瘤侵犯膀胱黏膜固有肌层（>1/2肌层）"),
        TUMOR_PENETRATING_BLADDER_MUCOSA_SUBMUCOSA_MUSCLE("tumorPenetratingBladderMucosaSubmucosaMuscle", "肿瘤穿透膀胱固有肌层达周围组织");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(DepthOfInvasionEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 脉管侵犯
     */
    @AllArgsConstructor
    @Getter
    public enum VascularInvasionEnum {
        //有 无 可疑
        YES("yes", "有"),
        NO("no", "无"),
        SUSPICIOUS("suspicious", "可疑");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(VascularInvasionEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 神经侵犯
     */
    @AllArgsConstructor
    @Getter
    public enum NeurologicalInvasionEnum {
        //有 无 可疑
        YES("yes", "有"),
        NO("no", "无"),
        SUSPICIOUS("suspicious", "可疑");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(NeurologicalInvasionEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 侵及邻近器官
     */
    @AllArgsConstructor
    @Getter
    public enum InvasionOfAdjacentOrgansEnum {
        //无 前列腺 精囊腺 子宫 宫颈 阴道 腹壁 盆壁 直肠 其他
        NO("no", "无"),
        PROSTATE("prostate", "前列腺"),
        SEMINAL_VESICLE("seminalVesicle", "精囊腺"),
        UTERUS("uterus", "子宫"),
        CERVIX("cervix", "宫颈"),
        VAGINA("vagina", "阴道"),
        ABDOMEN("abdomen", "腹壁"),
        PELVIS("pelvis", "盆壁"),
        RECTUM("rectum", "直肠"),
        OTHER("other", "其他");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(InvasionOfAdjacentOrgansEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 切缘名称
     */
    @AllArgsConstructor
    @Getter
    public enum MarginsEnum {
        //左侧输尿管切缘 右侧输尿管切缘 尿道切缘 环周切缘 双侧输精管切缘
        LEFT_URETERAL_MARGIN("leftUreteralMargin", "左侧输尿管切缘"),
        RIGHT_URETERAL_MARGIN("rightUreteralMargin", "右侧输尿管切缘"),
        URINARY_TRACT_MARGIN("urinaryTractMargin", "尿道切缘"),
        CIRCUMFERENCE_MARGIN("circumferenceMargin", "环周切缘"),
        BILATERAL_FEMRAL_CANAL_MARGIN("bilateralFemralCanalMargin", "双侧输精管切缘");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(MarginsEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 切缘情况
     */
    @AllArgsConstructor
    @Getter
    public enum CutEdgeSituationEnum {
        //未见癌残留 癌组织紧靠标本切缘 见癌组织累及
        NOT_YET_SEEN("not_yet_seen", "未见癌残留"),
        CLOSER_TO_THE_SAMPLE_CUT_EDGE("closer_to_the_sample_cut_edge", "癌组织紧靠标本切缘"),
        SEE_CANCER_TISSUE("see_cancer_tissue", "见癌组织累及");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(CutEdgeSituationEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 前列腺
     */
    @AllArgsConstructor
    @Getter
    public enum ProstateEnum {
        //未见特殊 良性前列腺增生 前列腺萎缩 前列腺腺病 前列腺基底细胞增生 其他
        NOT_SPECIAL("not_special", "未见特殊"),
        BENIGN_PROSTATE_HYPERTROPHY("benignProstateHypertrophy", "良性前列腺增生"),
        PROSTATE_ATROPHY("prostateAtrophy", "前列腺萎缩"),
        PROSTATE_DISEASE("prostateDisease", "前列腺腺病"),
        PROSTATE_BASAL_CELL_GROWTH("prostateBasalCellGrowth", "前列腺基底细胞增生"),
        OTHER("other", "其他");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(ProstateEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 精囊腺
     */
    @AllArgsConstructor
    @Getter
    public enum SeminalVesicleEnum {
        //未见特殊
        NOT_SPECIAL("not_special", "未见特殊");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(SeminalVesicleEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 其他情况-表单1
     */
    @AllArgsConstructor
    @Getter
    public enum Form1Enum {
        //粗糙+上切 3点 6点 9点 下切 癌结节 网膜 近端 远端
        ROUGH_PLUS_UP("rough_plus_up", "粗糙+上切"),
        THREE_POINTS("three_points", "3点"),
        SIX_POINTS("six_points", "6点"),
        NINE_POINTS("nine_points", "9点"),
        DOWN("down", "下切"),
        CANCER_NODULE("cancer_nodule", "癌结节"),
        NET("net", "网膜"),
        NEAR("near", "近端"),
        FAR("far", "远端");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(Form1Enum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 其他情况-表单2
     */
    @AllArgsConstructor
    @Getter
    public enum Form2Enum {
        //未见癌累及  见癌累及
        NOT_YET_SEEN("not_yet_seen", "未见癌累及"),
        SEE_CANCER("see_cancer", "见癌累及");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(Form2Enum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 远处转移
     */
    @AllArgsConstructor
    @Getter
    public enum MetastasisEnum {
        //Mx未知 cM0无远处转移 M1a超出髂总淋巴结群的淋巴結转移 M1b非淋巴结远程转移
        MX("mx", "Mx未知"),
        CM0("cm0", "cM0无远处转移"),
        M1A("m1a", "M1a超出髂总淋巴结群的淋巴結转移"),
        M1B("m1b", "M1b非淋巴结远程转移");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(MetastasisEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 病理分期-TNM分期
     */
    @AllArgsConstructor
    @Getter
    public enum LesionTnmStageEnum {

        YP("yp", "yp"),
        P("p", "p");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(LesionTnmStageEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 病理分期-T
     */
    @AllArgsConstructor
    @Getter
    public enum LesionTEnum {
        //Tx T0 Ta Tis T1 T1a T2a T2b T3a T3b T4a T4b 根据这个枚举生成
        TX("Tx", "Tx"),
        //T0
        T0("T0", "T0"),
        //Ta
        TA("Ta", "Ta"),
        //Tis
        TIS("Tis", "Tis"),
        //T1
        T1("T1", "T1"),
        //T1a
        T1A("T1a", "T1a"),
        //T2a
        T2A("T2a", "T2a"),
        //T2b
        T2B("T2b", "T2b"),
        //T3a
        T3A("T3a", "T3a"),
        //T3b
        T3B("T3b", "T3b"),
        //T4a
        T4A("T4a", "T4a"),
        //T4b
        T4B("T4b", "T4b");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(LesionTEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }


    /**
     * 病理分期-N
     */
    @AllArgsConstructor
    @Getter
    public enum LesionNEnum {

        NX("Nx", "Nx"),
        N0("N0", "N0"),
        N1("N1", "N1"),
        N2("N2", "N2"),
        N3("N3", "N3");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(LesionNEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 病理分期-M
     */
    @AllArgsConstructor
    @Getter
    public enum LesionMEnum {

        MX("Mx", "Mx"),
        CM0("cM0", "cM0"),
        M1A("M1a", "M1a"),
        M1B("M1b", "M1b");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(LesionMEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 免疫组化-表达式
     */
    @AllArgsConstructor
    @Getter
    public enum ImmunohistochemistryExpressionEnum {

        PLUS("+", "+"),
        REDUCE("-", "-"),
        PLUS2("++", "++"),
        PLUS3("+++", "+++"),
        PLUS_OR_MINUS("±", "±");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(ImmunohistochemistryExpressionEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

    /**
     * 免疫组化-其他表达
     */
    @AllArgsConstructor
    @Getter
    public enum ImmunohistochemistryOtherExpressionEnum {

        LYMPHOCYTE_EXPRESSION("lymphocyte_expression", "淋巴细胞表达"),
        VASCULAR_EXPRESSION("vascular_expression", "脉管表达"),
        IMMUNE_CELL_EXPRESSION("immune_cell_expression", "间质免疫细胞表达");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(ImmunohistochemistryOtherExpressionEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }


    /**
     * 原位杂交/特殊染色-分析结果
     */
    @AllArgsConstructor
    @Getter
    public enum InSituHybridizationExpressionEnum {

        PLUS("+", "+"),
        REDUCE("-", "-"),
        ZERO("0", "0"),
        PLUS1("1+", "1+"),
        PLUS2("2+", "2+"),
        PLUS3("3+", "3+"),
        PLUS_OR_MINUS("±", "±");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(InSituHybridizationExpressionEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }



    /**
     * 分子检测-检测方法
     */
    @AllArgsConstructor
    @Getter
    public enum DetectionMethodEnum {
        //FISH PCR  NGS
        FISH("fish", "FISH"),
        PCR("pcr", "PCR"),
        NGS("ngs", "NGS");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(DetectionMethodEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }


    /**
     * 分子检测-结果
     */
    @AllArgsConstructor
    @Getter
    public enum MolecularDetectionResultEnum {
        //突变 未突变 未知
        MUTATION("mutation", "突变"),
        NOT_MUTATION("not_mutation", "未突变"),
        UNKNOWN("unknown", "未知");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(MolecularDetectionResultEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());


        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }

    }

    /**
     * 淋巴结
     */
    @AllArgsConstructor
    @Getter
    public enum LymphGlandEnum {

        NOT_TRANSFERRED("not_transferred", "未见转移"),
        SEE_TRANSFER("see_transfer", "见转移"),
        GRANULOMATOUS_INFLAMMATION("granulomatous_inflammation", "肉芽肿性炎"),
        ADIPOSE_TISSUE("adipose_tissue", "脂肪组织"),
        OTHER("other", "其他");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(LymphGlandEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }


    /**
     * 其他送检组织
     */
    @AllArgsConstructor
    @Getter
    public enum OtherInspectionOrganizationsEnum {

        GASTRIC_TISSUE("gastric_tissue", "胃组织"),
        ANASTOMOTIC_SITE_NEAR_END("anastomotic_site_near_end", "吻合口近端"),
        ANASTOMOTIC_SITE_REMOTE_END("anastomotic_site_remote_end", "吻合口远端");

        private final String key;
        private final String desc;

        private static final List<MappingEnum<String, String>> TEMP_MAPPING = Arrays.stream(OtherInspectionOrganizationsEnum.values())
                .map(e -> new MappingEnum<>(e.getKey(), e.getDesc(), null))
                .collect(Collectors.toList());

        public static List<MappingEnum<String, String>> getList() {
            return TEMP_MAPPING;
        }
    }

}
